/**
 * \file CProfil.h
 * \author Corentin Le Bail
 * \date 2009-2012
 * \brief Fichier de déclaration de la class CProfil
 */
//------------------------------------------------------------------------------
#ifndef __CPROFIL_H__
#define __CPROFIL_H__
//------------------------------------------------------------------------------
#include <QSettings>
//------------------------------------------------------------------------------
/**
 * \class CProfil CProfil.h "CProfil.h"
 * \brief Classe des profil.
 */
class CProfil
{
	public:
		/**
		 * \fn CProfil(QSettings *settings, QString name)
		 * \brief Constructeur
		 * \param[in] settings Référence vers un objet settings
		 * \param[in] name Nom du profil
		 */
		CProfil(QSettings *settings, QString name);
		~CProfil(void);
		/**
		 * \fn void write(void)
		 * \brief Ecrit le profil
		 */
		void write(void);
		/**
		 * \fn QString getName(void)
		 * \return Le nom du profil
		 */
		QString getName(void) { return _name; }
		/**
		 * \fn QString getBase(void)
		 * \return Le nom de la base de données
		 */
		QString getBase(void) { return _base; }
		/**
		 * \fn QString getJasper(void)
		 * \return L'adresse du serveur Jasper
		 */
		QString getJasper(void) { return _jasper; }
		/**
		 * \fn QString getUser(void)
		 * \return Le nom du dernier utilisateur ayant pu se connecter
		 */
		QString getUser(void) { return _user; }
		/**
		 * \fn bool getLast(QString what, QString& last)
		 * \return Vrai si la valeur clé de la fenêtre (what) a été trouvé
		 * \param[in] what Nom de la dernière fenêtre
		 * \param[out] last La valeur trouvé
		 */
		bool getLast(QString what, QString& last);
		/**
		* \fn bool getLast(QString what, QMap<QString, QVariant> &lastKeyValues)
		* \return Vrai si la valeur clé de la fenêtre (what) a été trouvé
		* \param[in] what Nom de la dernière fenêtre
		* \param[out] lastKeyValues Les valeurs de clé trouvé
		*/
		bool getLast(QString what, QMap<QString, QVariant> &lastKeyValues);
		/**
		 * \fn void setServeur(QString value)
		 * \brief Affecte l'adresse du serveur de base de données au profil
		 * \param[in] value L'adresse du serveru de base de données
		 */
		void setBase(QString value) { _base=value; }
		/**
		 * \fn void setJasper(QString value)
		 * \brief Affecte l'adresse du serveur Jasper au profil
		 * \param[in] value L'adresse du serveur Jasper
		 */
		void setJasper(QString value) { _jasper=value; }
		/**
		 * \fn void setLast(QString what, QString value)
		 * \brief Affecte la valeur clé de la fenêtre (what)
		 * \param[in] what Nom de la dernière fenêtre
		 * \param[in] value La valeur de la clé
		 */
		void setLast(QString what, QString value);
		/**
		* \fn void setLast(QString what, QMap<QString, QVariant> keyValues)
		* \brief Affecte la valeur clé de la fenêtre (what)
		* \param[in] what Nom de la dernière fenêtre
		* \param[in] keyValues La valeur des clés
		*/
		void setLast(QString what,QMap<QString, QVariant> keyValues);
		/**
		 * \fn void setUser(QString value)
		 * \brief Affecte le nom du dernier utilisateur ayant pu se connecter
		 * \param[in] value Le nom du dernier utilisateur ayant pu se connecter
		 */
		void setUser(QString value) { _user=value; }
		/**
		 * \fn bool isStorePassword(void)
		 * \return True si le mot de passe du dernier utilisateur connecté doit être sauvegardé, false sinon.
		 */
		bool isStorePassword(void) { return _storePassword; }
		/**
		 * \fn void setStorePassword(bool value)
		 * \brief Indique que le mot de passe du dernier utilisateur connecté doit être sauvegardé
		 * \param[in] value L'indiquation comme quoi le mot de passe du dernier utilisateur connecté doit être sauvegardé
		 */
		void setStorePassword(bool value) { _storePassword=value; }
		/**
		 * \fn QString getPassword(void)
		 * \return Le mot de passe du dernier utilisateur connecté
		 */
		QString getPassword(void) { return _password; }
		/**
		 * \fn void setPassword(QString value)
		 * \brief Le mot de passe du dernier utilisateur connecté
		 * \param[in] value Le mot de passe du dernier utilisateur connecté
		 */
		void setPassword(QString value) { _password=value; }
	private:
		QHash <QString, QVariant> lasts;
		QSettings *_settings;
		QString _name;
		QString _base;
		QString _jasper;
		QString _user;
		bool _storePassword;
		QString _password;
		
		void read(void);
};
//------------------------------------------------------------------------------
#endif //__CPROFIL_H__
//------------------------------------------------------------------------------